// axios插件
import axios from 'axios';
// 可选是否插入【默认插入】
//store插件
import store from '@/store';
// router插件
import router from '@/router';



// 是否允许跨域时携带cookie信息[一般不允许]
axios.defaults.withCredentials = false;
// 设置token认证接口时，配置axios的默认表头配置[默认打开页面时也是token]
let token = '';
axios.defaults.headers.common['Authorization'] = token;

// axios实例中配置默认访问的服务器端口
let url = 'http://127.0.0.1:8093';		//如果项目打包时，此处为空
let instance = axios.create({
	baseURL : url,
})

// 请求拦截器:在发送post/get请求之前，判断是否在本地中存储了token，如果有添加到headers内：后台会自己判断token是否过期
instance.interceptors.request.use( config=>{
	//拦截成功的操作
	// 获取本地的token
	let token = localStorage.getItem('token');
	// 判断是否存在token
	// if( token ){
		config.headers.Authorization = "bearer" + token;
	// }
	// 返回配置
	return config;
} , error=>{
	// 拦截失败的操作
	return Promise.reject(error);
} )

// 响应拦截器：用于拦截后台的报错处理
instance.interceptors.response.use( response=>{
	// 响应成功
	return response;
} , err=>{
	// 响应失败
	// 判断接口返回的错误信息是否为真
	if( err.response ){
		switch( err.response.status ){
			case 401 : 
				console.log('账号或密码错误');
				// 登录失败，清楚之前的token
				localStorage.setItem('token',"");
				// 返回登录页
				this.$router.push('/home');
				break;
			case 403 :
				console.log('非法闯入，禁止访问');
				break;
			default : 
				console.log('请求错误！');
				break;
		}
	}
	// 返回接口的信息提示
	return Promise.reject( err.response.data );
} )
// var instance = axios.create({
// 	baseURL : baseUrl   //以后要改主机或端口, 只要改这里
//   }
// )
// 导出axios实例
export default instance

